package leetcode.cn;

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * @version 1.8
 * @Author Djx_hmbb
 * @Date 2023/10/15 14:51
 * @注释:137.只出现一次的数字 II
 */
public class PrintOnceNum {
    /*
    给你一个整数数组 nums ，除某个元素仅出现 一次 外，其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
    你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。-->时间、空间复杂度都为O(n)

    示例 1：
    输入：nums = [2,2,3,2]
    输出：3

    示例 2：
    输入：nums = [0,1,0,1,0,1,99]
    输出：99*/
    public static int singleNumber(int[] nums) {
        Arrays.sort(nums);
        int leng = nums.length;
        int n = 1;
        for (int i = 0; i < leng-1; i++) {
            if(nums[i] != nums[i+1] && n == 1) return nums[i];
            if(nums[i] == nums[i+1]){ n++; }
            if(nums[i] != nums[i+1] && n == 3){ n=1; }
        }
        return nums[leng-1];
    }

    public static void main(String[] args) {
        int[] nums = {0,1,0,1,0,1,99};
        int i = singleNumber(nums);
        System.out.println(i);
    }
}
